package com.ruoyi.system.mapper.vant.shop;

import com.ruoyi.system.domain.construction.Team;
import com.ruoyi.system.domain.supe.PlatformCoupon;
import com.ruoyi.system.domain.vo.ApiBuildingVo;
import com.ruoyi.system.domain.zhuangxiumain.orderformMain.OrderDetail;
import com.ruoyi.system.domain.zhuangxiumain.shopMain.*;
import com.ruoyi.system.domain.zhuangxiumain.vo.PpiUrlVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ApiProductInfoMapper {


    //查询首页的全部商品
    public List<ProductInfo> findAllList(ProductInfo productInfo);

    List<ApiBuildingVo> findConstructionList(ApiBuildingVo apiBuildingVo);

    //根据地址查询
    public List<ProductInfo> findAllAdder(String address);
    /**
     * 查询商品信息
     *
     * @param productId 商品信息ID
     * @return 商品信息
     */
    public ProductInfo selectProductInfoById(Integer productId);

    /**
     * 查询商品信息列表
     *
     * @param productInfo 商品信息
     * @return 商品信息集合
     */
    public List<ProductInfo> selectProductInfoList(ProductInfo productInfo);


    /**
     * 查询商品分类列表
     * @return
     */
    public List<ProductCategory> selectProductCategories(String categoryType);

    /**
     * 查询商品类别下的商品信息
     * @return
     */
    public List<ProductInfo> selectProductByCateGory(@Param("categoryIds") List<Long> categoryIds);

    /**
     * 查询二级类别信息
     * @param cateGoryId
     * @return
     */
    public List<ProductCategory> selectCategoriesByParentId(Long cateGoryId);

    /**
     * 根据一级类别ID查询二级类别列表
     * @param cateGoryId
     * @return
     */
    public List<ProductCategory> selectSecondCategories(Long cateGoryId);

    /**
     * 根据商品ID查询商品信息
     * @param productId
     * @return
     */
    public ProductInfo getProductById(Long productId);

    /**
     * 根据品类类别查询商品列表
     * @param categoryType
     * @return
     */
    public List<ProductInfo> selectProductByCateGoryType(String categoryType);

    /**
     * 根据供应商ID查询供应商信息
     * @param supplierId
     * @return
     */
    public SupplierInfo getSupplierById(Long supplierId);

    /**
     * 根据供应商ID查询商品信息
     * @param supplierId
     * @return
     */
    public List<ProductInfo> selectProductBySupplierId(Long supplierId);

    /**
     * 根据商品名称查询商品信息
     * @param productName
     * @return
     */
    public List<ProductInfo> selectProductByName(String productName);

    /**
     * 根据商品ID查询订单详情
     * @param proInfoIds
     * @return
     */
    public List<OrderDetail> selectOrderDetailByProIds(@Param("proInfoIds") List<Integer> proInfoIds);

    /**
     * 根据商品Id查询商品的规格信息
     * @param productId
     * @return
     */
    public List<ProductLabel> selectProductLableByProId(Long productId);

    /**
     * 根据规格Id查询商品的规格信息
     * @param productLabelId
     * @return
     */
    public ProductLabel selectProductLableByLableId(Long productLabelId);

    /**
     * 查询商家优惠券列表
     * @param supplierId
     * @return
     */
    public List<PreferentialCard> selectSupplierCoupon(Long supplierId);

    /**
     * 查询店铺加入的平台优惠活动券
     * @param platformId
     * @return
     */
    public PlatformCoupon selectSupplierPlatformCoupon(Long platformId);

    /**
     * 根据商品的id查询规格的图片
     * @param productId
     * @return
     */
    public List<PpiUrlVo> selectPpiUrl(Integer productId);

    /**
     * 商家入驻
     * @param supplierInfo
     * @return
     */
    public int installSupplier(SupplierInfo supplierInfo);

    /**
     * 根据负责人手机号查询店铺信息
     * @param supplierInfo
     * @return
     */
    public int checkSupplierPhone(SupplierInfo supplierInfo);

    List<ProductInfo> selectSecondAll();

    List<ProductInfo> selectProductByCateGoryList();

    List<ProductInfo> CateGoryName(@Param("categoryNames") List<String> categoryNames);

    List<ProductInfo> selectProductByCateGoryTypeOne(String address);

    List<ProductInfo> selectProductByCateGoryTypeTwo(String address);

    public List<ProductInfo> selectProductByCateGoryOne(@Param("categoryIds") List<Long> categoryIds,@Param("address") String address);

    public int xiaoliang(Long productId);
}
